/**
 * 判断是否为用户名
 * @param username
 */
export function isUsername(username: string) {
  const uPattern = /^[a-zA-Z0-9_]{5,16}$/;
  if (!uPattern.test(username)) return false;
  return true;
}

/**
 * 判断是否为中文姓名
 * @param name
 */
export function isChineseName(name: string) {
  const regName = /^[\u4e00-\u9fa5]{2,4}$/;
  if (!regName.test(name)) return false;
  return true;
}

/**
 * 验证邮箱
 * @param str
 */
export function isEmail(str: string) {
  return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(str);
}

/**
 * 手机号码
 * @param str
 */
export function isMobile(str: string) {
  return /^1[0-9]{10}$/.test(str);
}

/**
 * 电话号码
 * @param str
 */
export function isPhone(str: string) {
  return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(str);
}

/**
 * URL地址
 * @param str
 */
export function isURL(str: string) {
  return /^http[s]?:\/\/.*/.test(str);
}
///-------------------Form Validator-------------------
/**
 * 表单验证[真实姓名]
 * @param rule
 * @param value
 * @param callback
 */
export const usernameValidator = (rule: any, value: string) => {
  if (value != "" && !isUsername(value)) {
    return Promise.reject("用户名输入错误");
  } else {
    return Promise.resolve();
  }
};

/**
 * 表单验证[真实姓名]
 * @param rule
 * @param value
 * @param callback
 */
export const realnameValidator = (rule: any, value: string) => {
  if (value != "" && !isChineseName(value)) {
    return Promise.reject("姓名输入错误");
  } else {
    return Promise.resolve();
  }
};

/**
 * 表单验证[手机号]
 * @param rule
 * @param value
 * @param callback
 */
export const phoneValidator = (rule: any, value: string) => {
  if (value != "" && !isMobile(value)) {
    return Promise.reject("手机号输入错误");
  } else {
    return Promise.resolve();
  }
};

/**
 * 表单验证[邮箱]
 * @param rule
 * @param value
 * @param callback
 */
export const emailValidator = (rule: any, value: string) => {
  if (value != "" && !isEmail(value)) {
    return Promise.reject("邮箱输入错误");
  } else {
    return Promise.resolve();
  }
};
